// 前端路由模块

// 1. 导入需要的路由成员
import { createRouter, createWebHistory } from 'vue-router'
import useUserStore from '../store/userStore'

// 导入需要通过路由切换的组件
import Login from '../views/Login/Index.vue'
import Layout from '../views/Layout/Index.vue'
// 导入子路由组件
import Preview from '../views/Preview/Index.vue'
import ContentManage from '../views/ContentManage/Index.vue'
import PostArticle from '../views/PostAritcle/Index.vue'
import UserInfo from '../views/UserInfo/Index.vue'

// 2. 创建路由对象
const router = createRouter({
  // 使用浏览器的 history API 控制路由切换
  history: createWebHistory(),
  // 路由规则
  routes: [
    // meta 原数据
    // 登录的路由规则
    { path: '/login', component: Login, meta: { name: '登录' } },
    // 后台主页的路由规则
    {
      path: '/',
      component: Layout,
      meta: { name: '首页' },
      children: [
        // 子路由规则
        // 注意：如果子路由的 path 路径的前缀，正好是父路由的 path 地址，
        //       则子路由的路径前缀可以省略不写
        // 路由重定向
        { path: '/', redirect: '/preview' },
        { path: 'preview', component: Preview, meta: { name: '数据概览' } },
        { path: 'content-manage', component: ContentManage, meta: { name: '内容管理' } },
        { path: 'post-article', component: PostArticle, meta: { name: '发布文章' } },
        { path: 'user-info', component: UserInfo, meta: { name: '个人资料' } }
      ]
    }
  ]
})

// 注册全局前置守卫
router.beforeEach((to, from) => {
  if (to.path !== '/login') {
    // 判断是否有 token
    const token = useUserStore().token
    if (!token) {
      // 强制用户回到登录页
      return { path: '/login' }
    }
  }
})

// 3. 默认导出
export default router
